.\"	$OpenBSD: fegetenv.3,v 1.3 2013/06/05 03:40:26 tedu Exp $
.\"
.\" Copyright (c) 2011 Martynas Venckus <martynas@openbsd.org>
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.\" purpose with or without fee is hereby granted, provided that the above
.\" copyright notice and this permission notice appear in all copies.
.\"
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
.Dd $Mdocdate: June 5 2013 $
.Dt FEGETENV 3
.Os
.Sh NAME
.Nm fegetenv ,
.Nm feholdexcept ,
.Nm fesetenv ,
.Nm feupdateenv
.Nd manage floating-point environment
.Sh SYNOPSIS
.In fenv.h
.Ft int
.Fn fegetenv "fenv_t *envp"
.Ft int
.Fn feholdexcept "fenv_t *envp"
.Ft int
.Fn fesetenv "const fenv_t *envp"
.Ft int
.Fn feupdateenv "const fenv_t *envp"
.Sh DESCRIPTION
These functions manage the floating-point environment -- status
flags, rounding direction modes and exception masks -- as one entity.
The
.Fa envp
input argument is an object representing the floating-point environment.
The macro
.Dv FE_DFL_ENV
represents the default floating-point environment -- the one installed
at program startup.
.Pp
The
.Fn fegetenv
function stores the current floating-point environment in the object
pointed to by
.Pa envp .
.Pp
The
.Fn feholdexcept
function saves the current floating-point environment in the object
pointed to by
.Pa envp ,
clears the floating-point status flags, and then installs a non-stop
(continue on floating-point exceptions) mode for all floating-point
exceptions.
.Pp
The
.Fn fesetenv
function establishes the floating-point environment represented by
the object pointed to by
.Pa envp .
The argument
.Pa envp
shall point to an object set by a call to
.Fn fegetenv
or
.Fn feholdexcept ,
or equal the macro
.Dv FE_DFL_ENV .
Note that
.Fn fesetenv
merely installs the state of the floating-point status flags
represented through its argument, and does not raise these
floating-point exceptions.
.Pp
The
.Fn feupdateenv
function saves the currently raised floating-point exceptions in
its automatic storage, installs the floating-point environment
represented by the object pointed to by
.Pa envp ,
and then raises the saved floating-point exceptions.
The argument
.Pa envp
shall point to an object set by a call to
.Fn feholdexcept
or
.Fn fegetenv ,
or equal the macro
.Dv FE_DFL_ENV .
.Sh RETURN VALUES
The
.Fn fegetenv ,
.Fn feholdexcept ,
.Fn fesetenv ,
and
.Fn feupdateenv
functions return zero on success, and non-zero if an error occurred.
.Sh SEE ALSO
.Xr feclearexcept 3 ,
.Xr feenableexcept 3 ,
.Xr fegetround 3
.Sh STANDARDS
The
.Fn fegetenv ,
.Fn feholdexcept ,
.Fn fesetenv ,
and
.Fn feupdateenv
functions conform to
.St -isoC-99 .
.Pp
The return types for
.Fn fegetenv ,
.Fn fesetenv ,
and
.Fn feupdateenv
are
.Vt int
for alignment with
.St -isoC-99
Defect Report #202.
